package com.yindian.cos.easy.security.properties;

import com.yindian.cos.easy.security.constant.ProviderName;
import lombok.Data;
import org.springframework.http.HttpMethod;

/**
 * 微信登录配置项
 *
 * @author zhangchuanhao
 * @create 2018/11/21
 */
@Data
public class WeiXinProperties {

    /**
     * 是否启用
     */
    private Boolean enable = false;

    /**
     * 登录地址不能和redirectUri一样否则拦截器无法方形该地址
     */
    private String loginUrl = "/api/social/" + ProviderName.WEIXIN;

    /**
     * 请求方式
     */
    private String method = HttpMethod.GET.name();

    /**
     * 授权码地址
     */
    private String authorizationCodeUrl = "https://open.weixin.qq.com/connect/qrconnect";

    /**
     * 应用唯一标识
     */
    private String appId;

    /**
     * 微信颁发的key
     */
    private String appSecret;

    /**
     * 网址域名
     */
    private String domain;

    /**
     * 授权后重定向的页面地址，请使用urlEncode对链接进行处理
     */
    private String redirectUri;

    /**
     * 填code
     */
    private String responseType = "code";

    /**
     * 应用授权作用域，拥有多个作用域用逗号（,）分隔，网页应用目前仅填写snsapi_login即可
     */
    private String scope = "snsapi_login";

    /**
     * 用于保持请求和回调的状态，授权请求后原样带回给第三方。
     * 该参数可用于防止csrf攻击（跨站请求伪造攻击），建议第三方带上该参数，可设置为简单的随机数加session进行校验
     */
    private String state = "easy_security";

    /**
     * accessToken地址
     */
    private String accessTokenUrl = "https://api.weixin.qq.com/sns/oauth2/access_token";

    /**
     * 授权类型，在本步骤中，此值为authorization_code
     */
    private String grantType = "authorization_code";

    /**
     * 获取用户信息
     */
    private String userInfoUrl = "https://api.weixin.qq.com/sns/userinfo";

    /**
     * 拦截的执行顺序
     */
    private int order = 600;
}
